//package com.douqu.game.main.quene;
//
//import ch.qos.logback.core.net.SyslogOutputStream;
//
//import java.util.concurrent.BlockingDeque;
//import java.util.concurrent.ExecutorService;
//import java.util.concurrent.Executors;
//import java.util.concurrent.LinkedBlockingDeque;
//
///**
// * @author: Gavin.
// * Description:
// * Date: 2018/1/16 0016 下午 5:01
// * Huan Yu Copyright (c) 2017 All Rights Reserved.
// */
//public class LoginQueue {
//    class Account{
//
//        private String account;
//        private long removeQueueTime;
//
//        public Account(String account,long removeQueueTime){
//            this.account = account;
//            this.removeQueueTime = removeQueueTime;
//        }
//
//        public String getAccount() {
//            return account;
//        }
//
//        public void setAccount(String account) {
//            this.account = account;
//        }
//
//        public long getRemoveQueueTime() {
//            return removeQueueTime;
//        }
//
//        public void setRemoveQueueTime(long removeQueueTime) {
//            this.removeQueueTime = removeQueueTime;
//        }
//    }
//
//    class Center{
//
//        BlockingDeque<Account> accountCenter = new LinkedBlockingDeque<Account>(2);
//
//        // 加入队列
//        public void produce(Account account) throws InterruptedException {
//            // put方法加入一个用户，若accountCenter满了,等accountCenter有空位置在加入
//            accountCenter.put(account);
//        }
//
//        // 出队
//        public Account consume() throws InterruptedException {
//            // take方法取出一个排队用户，若accountCenter为空，等到accountCenter有用户为止(获取并移除此队列的头部)
//            return accountCenter.take();
//        }
//    }
//
//    //生产者
//    class Producer implements Runnable{
//
//        private Center  center;
//        private Account  account;
//
//        public Producer(Center center,Account account){
//            this.center = center;
//            this.account = account;
//        }
//
//        @Override
//        public void run() {
//            try {
//                while(true){
//                    // 加入用户
//                    System.out.println("准备入列：" + account);
//                    center.produce(account);
//                    System.out.println("!入列完毕：" + account);
//                }
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//                System.out.println("Producer account");
//            }
//        }
//    }
//
//
//    //定义消费者
//    class  Consumer implements Runnable{
//
//        private Center center;
//        private String account;
//
//        public Consumer(Center center,String account){
//            this.center = center;
//            this.account = account;
//        }
//
//        @Override
//        public void run() {
//            try {
//                while(true){
//                    // 加入用户
//                    System.out.println("用户中心准备出列：" + center.accountCenter.takeFirst());
//                    center.consume();
//                    System.out.println("!完成出列：" + center.accountCenter.takeFirst());
//                }
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//                System.out.println("Producer account");
//            }
//        }
//    }
//
//    public static void main(String args[]){
//        LoginQueue loginQueue = new LoginQueue();
//        Center center = loginQueue.new Center();
//        ExecutorService service = Executors.newCachedThreadPool();
//
//        //等待时间
//        long sleepTime = (center.accountCenter.size() + 1) * 10000;
//
//        System.out.println("进入用户中心等待时间：" + sleepTime);
//        Producer producer1 = loginQueue.new Producer(center,loginQueue.new Account("zhangsan",sleepTime));
//
//        Producer producer2 = loginQueue.new Producer(center,loginQueue.new Account("lisi",sleepTime));
//        service.submit(producer1);
//        service.submit(producer2);
//        System.out.println("加入后队列的用户：" + center.accountCenter.size());
//
//        Consumer consumer = loginQueue.new Consumer(center,null);
//        service.submit(consumer);
//        System.out.println("出列后队列中的用户：" + center.accountCenter.size());
//
////        service.shutdown();
//
//    }
//}
